package view;

import java.awt.Color;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;

import javax.swing.SwingUtilities;

import model.KISpieler;
import model.Spieler;

public class Achtung {
	/**
	 * @param args
	 *            String[] Parameter ans Programm
	 */
	public static void main(String[] args) {
		// Damit das Interface im richtigen Thread laeuft
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				ConfigFrame frame = new ConfigFrame();
				for (Spieler spieler : loadSpieler()) {
					frame.addSpieler(spieler);
				}
				frame.pack();
				frame.setVisible(true);
			}
		});
	}

	public static void saveSpieler(Spieler[] spieler) {
		Preferences prefs = Preferences.userNodeForPackage(Achtung.class);
		prefs.putInt("Spieler Count", spieler.length);
		for (int i = 0; i < spieler.length; i++) {
			Spieler s = spieler[i];
			prefs.put("Spieler." + i + ".name", s.getName());
			Color color = s.getFarbe();
			prefs.putInt("Spieler." + i + ".colorR", color.getRed());
			prefs.putInt("Spieler." + i + ".colorG", color.getGreen());
			prefs.putInt("Spieler." + i + ".colorB", color.getBlue());
			prefs.put("Spieler." + i + ".leftKey", "" + s.getLeftKey());
			prefs.put("Spieler." + i + ".rightKey", "" + s.getRightKey());
			prefs.putBoolean("Spieler." + i + ".isKI", s instanceof KISpieler);
		}
		try {
			prefs.flush();
		} catch (BackingStoreException e) {
			e.printStackTrace();
		}
	}

	public static Spieler[] loadSpieler() {
		Preferences prefs = Preferences.userNodeForPackage(Achtung.class);
		Spieler[] spieler = new Spieler[prefs.getInt("Spieler Count", 1)];
		for (int i = 0; i < spieler.length; i++) {
			String name = prefs.get("Spieler." + i + ".name", "Unbenannt");
			Color farbe = new Color(
					prefs.getInt("Spieler." + i + ".colorR", 0), prefs.getInt(
							"Spieler." + i + ".colorG", 255), prefs.getInt(
							"Spieler." + i + ".colorB", 0));
			char leftKey = prefs.get("Spieler." + i + ".leftKey", "a")
					.charAt(0);
			char rightKey = prefs.get("Spieler." + i + ".rightKey", "s")
					.charAt(0);
			if (prefs.getBoolean("Spieler." + i + ".isKI", false)) {
				spieler[i] = new KISpieler(name, farbe, leftKey, rightKey);
			} else {
				spieler[i] = new Spieler(name, farbe, leftKey, rightKey);
			}
		}
		return spieler;
	}
}
